package com.mason.forum.service;

import com.mason.forum.model.Message;
import com.mason.forum.model.vo.MessageVO;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: 马拉圈
 * Date: 2023-10-08
 * Time: 19:49
 */
public interface IMessageService {

    /**
     * 发送站内信
     * @param message 站内信消息
     */
    void sendMessage(Message message);


    /**
     * 根据接收者id，获取未读私信条数
     * @param receiveUserId 接收者id
     * @return 未读私信条数
     */
    Long getNotAwareNumber(Long receiveUserId);


    /**
     * 通过id查询message
     * @param id 站内信id
     * @return 站内信消息
     */
    Message selectById(Long id);


    /**
     * 根据接收者id，获取私信列表
     * @param receiveUserId 接收者id
     * @return 私信列表
     */
    List<MessageVO> getMessagesById(Long receiveUserId);

    /**
     * 通过id标记站内信为某个状态
     * @param id 站内信id
     * @param state 状态
     */
    void markRead(Long id, Byte state);


    /**
     * 1. 发送message
     * 2. 将站内信标记为已回复
     * @param message 站内信
     * @param id 被回复的站内信id
     *    这是一个事务~
     */
    @Transactional
    void replyMessage(Message message, Long id);
}
